home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / elk-2_0.lha / elk-2.0 / lib / xlib / util.c < prev    next >
C/C++ Source or Header  |  1992-10-13  |  2KB  |  71 lines

  1. #include "xlib.h"
  2.  
  3. static Object P_Get_Default (d, program, option) Object d, program, option; {
  4.     register char *ret, *p, *o;
  5.     Object r;
  6.     Declare_C_Strings;
  7.  
  8.     Check_Type (d, T_Display);
  9.     Make_C_String (program, p);
  10.     Make_C_String (option, o);
  11.     if (!(ret = XGetDefault (DISPLAY(d)->dpy, p, o)))
  12.     r =  False;
  13.     else
  14.     r = Make_String (ret, strlen (ret));
  15.     Dispose_C_Strings;
  16.     return r;
  17. }
  18.  
  19. static Object P_Resource_Manager_String (d) Object d; {
  20.     register char *ret;
  21.  
  22.     Check_Type (d, T_Display);
  23.     ret = XResourceManagerString (DISPLAY(d)->dpy);
  24.     return ret ? Make_String (ret, strlen (ret)) : False;
  25. }
  26.  
  27. static Object P_Parse_Geometry (string) Object string; {
  28.     register char *s;
  29.     Object ret, t;
  30.     register mask;
  31.     int x, y;
  32.     unsigned w, h;
  33.     Declare_C_Strings;
  34.  
  35.     Make_C_String (string, s);
  36.     mask = XParseGeometry (s, &x, &y, &w, &h);
  37.     t = ret = P_Make_List (Make_Fixnum (6), False);
  38.     if (mask & XNegative) Car (t) = True; t = Cdr (t);
  39.     if (mask & YNegative) Car (t) = True; t = Cdr (t);
  40.     if (mask & XValue) Car (t) = Make_Fixnum (x); t = Cdr (t);
  41.     if (mask & YValue) Car (t) = Make_Fixnum (y); t = Cdr (t);
  42.     if (mask & WidthValue) Car (t) = Make_Unsigned (w); t = Cdr (t);
  43.     if (mask & HeightValue) Car (t) = Make_Unsigned (h);
  44.     Dispose_C_Strings;
  45.     return ret;
  46. }
  47.  
  48. static Object P_Parse_Color (d, cmap, spec) Object d, cmap, spec; {
  49.     register char *s;
  50.     XColor ret;
  51.     Object r;
  52.     Declare_C_Strings;
  53.  
  54.     Check_Type (d, T_Display);
  55.     Make_C_String (spec, s);
  56.     if (!XParseColor (DISPLAY(d)->dpy, Get_Colormap (cmap), s, &ret))
  57.     r = False;
  58.     else
  59.     r = Make_Color (ret.red, ret.green, ret.blue);
  60.     Dispose_C_Strings;
  61.     return r;
  62. }
  63.  
  64. init_xlib_util () {
  65.     Define_Primitive (P_Get_Default,       "get-default",         3, 3, EVAL);
  66.     Define_Primitive (P_Resource_Manager_String,
  67.             "resource-manager-string",                1, 1, EVAL);
  68.     Define_Primitive (P_Parse_Geometry,    "parse-geometry",      1, 1, EVAL);
  69.     Define_Primitive (P_Parse_Color,       "parse-color",         3, 3, EVAL);
  70. }
  71.